package com.compunit.composite.core.interfaces;

/**
 * <code>IClassExporter</code> defines the interface of
 * an utility unit that is responsible for exporting its
 * cached <code>Class</code> data to a given file.
 *
 * @author Yi Wang (Neakor)
 * @version Creation date: 11-12-2009 19:00 EST
 * @version Modified date: 11-12-2009 19:08 EST
 */
public interface IClassExporter extends IExporter {

	/**
	 * Add the given class object for export.
	 * <p>
	 * This method automatically excludes duplicates.
	 * @param classobject The <code>Class</code> object.
	 */
	public void addClass(final Class<?> classobject);
	
	/**
	 * Remove the given class object from export.
	 * @param classobject The <code>Class</code> object.
	 */
	public void removeClass(final Class<?> classobject);
	
	/**
	 * Check if given class object is already added.
	 * @param classobject The <code>Class</code> object
	 * to be checked.
	 * @return <code>true</code> if given class object
	 * is already added. <code>false</code> otherwise.
	 */
	public boolean containsClass(final Class<?> classobject);
}
